﻿using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace HRP.Private.Cargos
{
    public partial class Index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Session["EmpresaActual"] != null)
                {
                    Session["VistaEmpresaId"] = ((hrp_empresas)Session["EmpresaActual"]).id;
                }
                CarregarDepartamentos();
            }

            Page.PreRender += new EventHandler(Page_PreRender);
        }

        void Page_PreRender(object sender, EventArgs e)
        {
            if (Session["EmpresaActual"] != null && Session["VistaEmpresaId"] != null) 
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                if (empresa.id != (int)Session["VistaEmpresaId"])//verifica se a empresa foi mudada
                {
                    CarregarDepartamentos();
                    Session["VistaEmpresaId"] = empresa.id;
                }
                CarregarCargos();
            }

        }

        void CarregarDepartamentos()
        {
            List<hrp_departamentos> listaDep = new List<hrp_departamentos>();
            hrp_departamentos todosDep = new hrp_departamentos() { id = 0, departamento = "Todos" };
            listaDep.Add(todosDep);
            if (Session["EmpresaActual"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                listaDep.AddRange(Departamento_BLL.Instance.obterDepartamentosEmpresa((int)Session["idclient"], empresa.id, false, false).OrderBy(d=>d.departamento).AsEnumerable());
            }
            departamentosList.DataSource = listaDep;
            departamentosList.DataBind();
        }

        void CarregarCargos()
        {
            hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
            int departamentoActual = 0;
            Int32.TryParse(departamentosList.SelectedItem.Value, out departamentoActual);
            cargosTable.DataSource = Cargo_BLL.Instance.obterCargosDepartamento(empresa.id, departamentoActual,false).OrderBy(c=>c.Nome).ToList();
            cargosTable.DataBind();
        }

        public void alterarEstadoCargo(Object sender, CommandEventArgs e)
        {
            int cargoId = 0;
            Int32.TryParse(e.CommandArgument.ToString(), out cargoId);
            if (cargoId != 0 && Session["idclient"] != null && Session["userid"] != null)
            {
                int id_cliente = (int)Session["idclient"];
                string userId = Session["userid"].ToString();
                Cargo_BLL.Instance.AlterarEstado((int)Session["idclient"], userId, cargoId);
            }
        }
    }
}